Consider the curve $\mathbf{z}(t)=(t,t^2,t^3)$ with $t\in[-1,1]$.
We define the variables and the curve:
var('x,y,z,t,t1,t2,t3',domain='real')
V_z = vector([t,t^2,t^3])
show(V_z)
We will define a function spacecurve to obtain the tangent vector, the normal vector and the binormal vector, as well as the curvature and the torsion:
def spacecurve(V,vr=t):
V1,V2,V3=[V.derivative(vr,j) for j in (1,2,3)]
V12=V1.cross_product(V2)
reg=(V1*V1).simplify_full()
tv=V1.normalized().canonicalize_radical().simplify_full()
nv=tv.derivative(vr).normalized().canonicalize_radical().simplify_full()
bv=V12.normalized().canonicalize_radical().simplify_full()
kappa=V12.norm()/V1.norm()^3
kappa=kappa.canonicalize_radical().simplify_full()
tau=Matrix([V1,V2,V3]).det()/(V12*V12)
tau=tau.simplify_full()
return reg,tv,nv,bv,kappa,tau
We apply it on the curve $\mathbf{z}(t)=(t,t^2,t^3)$
reg,tv,nv,bv,kappa,tau=spacecurve(V_z)
The Frenet-Serret trihedron is given by the tangent vector tv, the normal vector nv and the binormal vector bv computed in the function spacecurve. The calculations in that function are based on the following expressions:
show(tv)
show(nv)
show(bv)
The curvature kappa is computed in the function spacecurve using the formula
$$\kappa = \frac{||\mathbf{z}'\times\mathbf{z}''||}{||\mathbf{z}'||^3}$$
and we obtain:
show(kappa)
The torsion tau is computed in the function spacecurve using the formula
$$\tau = \frac{\text{det}(\mathbf{z}',\mathbf{z}'',\mathbf{z}''')}{(\mathbf{z}'\times\mathbf{z}'')^2}$$
and we obtain:
show(tau)
We define a parametric plot of $\mathbf{z}(t)$ for $t\in[-1,1]$ and the function arrow which returns a 3D arrow whose origin is each point of the curve and whose direction is the one defined by each vector (tangent, normal or binormal) at that point. The length of the arrow can be scaled to improve the display.
In red, the arrow associated to the tangent vector.
In purple, the arrow associated to the normal vector.
In green, the arrow associated to the binormal vector.
P=parametric_plot3d(V_z,(t,-1,1), frame=False)
def arrow(V,vv,t0,color='red'):
return arrow3d(V(t=t0),V(t=t0)+1*vv(t=t0),color=color,width=1)
A=animate([P+arrow(V_z,tv,t0)+arrow(V_z,nv,t0,color='purple')+arrow(V_z,bv,t0,color='green') for t0 in [-1,-0.95,..,1]])
A.interactive()
The length of $\mathbf{z}(t)$ between $t_1=-1$ and $t_2=1$ is
$$L(\mathbf{z})=\int_{t_1}^{t_2}||\mathbf{z'(t)}||\ \text{d}t=\int_{-1}^{1}\sqrt{1+4t^2+9t^4}\ \text{d}t$$It does not seem possible to solve the integral analytically, so we will resort to a function of numerical integration in SageMath. The function numerical_integral takes the integrand and the upper and lower bounds. Then, we obtain the following approximation:
show(numerical_integral(sqrt(1+4*x^2+9*x^4),-1,1)[0])
The osculating plane at $t_i$ is the plane that passes through $\mathbf{z}(t_i)$ and whose direction vectors are $\mathbf{t}(t_i)$ and $\mathbf{n}(t_i)$. Let us obtain the three planes:
r = vector([x,y,z])
plane1 = Matrix([r-V_z.subs(t=t1),tv.subs(t=t1),nv.subs(t=t1)]).det()==0
plane2 = Matrix([r-V_z.subs(t=t2),tv.subs(t=t2),nv.subs(t=t2)]).det()==0
plane3 = Matrix([r-V_z.subs(t=t3),tv.subs(t=t3),nv.subs(t=t3)]).det()==0
show(plane1.full_simplify())
show(plane2.full_simplify())
show(plane3.full_simplify())
We find the point of intersection of the three planes, which will have the following three coordinates:
intersection = solve([plane1,plane2,plane3],[x,y,z])[0]
show(intersection[0])
show(intersection[1])
show(intersection[2])
Now, we build the plane defined by $\textbf{z}(t_1)$, $\textbf{z}(t_2)$ and $\textbf{z}(t_3)$:
r = vector([x,y,z])
d12 = V_z.subs(t=t2)-V_z.subs(t=t1)
d13 = V_z.subs(t=t3)-V_z.subs(t=t1)
plane = Matrix([r-V_z.subs(t=t1),d12,d13]).det()==0
show(plane)
We substitute in $x$, $y$, $z$ the coordinates of the point of intersection previously computed to see if it satisfies the equation in this new plane:
show(plane.subs(x=intersection[0].rhs(),y=intersection[1].rhs(),z=intersection[2].rhs()).full_simplify())
Indeed, it satisfies the equation of the plane. Therefore, we just proved that the point of intersection of the osculating planes at $t_1$, $t_2$ and $t_3$ is contained in the plane that contains $\mathbf{z}(t_1)$, $\mathbf{z}(t_2)$ and $\mathbf{z}(t_3)$.
For instance, let us take $$t_1=-0.4$$ $$t_2=0.1$$ $$t_3=0.7$$ We build the same planes as before, but with these specific numerical values.
t1=-0.4
t2=0.1
t3=0.7
point = point3d((intersection[0].rhs().subs(t1=t1,t2=t2,t3=t3),
intersection[1].rhs().subs(t1=t1,t2=t2,t3=t3),
intersection[2].rhs().subs(t1=t1,t2=t2,t3=t3)),size=20)
P=parametric_plot3d(V_z,(t,-1,1), frame=False, thickness=3)
r = vector([x,y,z])
planet1 = Matrix([r-V_z.subs(t=t1),tv.subs(t=t1),nv.subs(t=t1)]).det()==0
planet2 = Matrix([r-V_z.subs(t=t2),tv.subs(t=t2),nv.subs(t=t2)]).det()==0
planet3 = Matrix([r-V_z.subs(t=t3),tv.subs(t=t3),nv.subs(t=t3)]).det()==0
plotplanet1 = implicit_plot3d(planet1,(x,-1,1),(y,-1,1),(z,-1,1),color='red',opacity=0.5)
plotplanet2 = implicit_plot3d(planet2,(x,-1,1),(y,-1,1),(z,-1,1),color='green',opacity=0.5)
plotplanet3 = implicit_plot3d(planet3,(x,-1,1),(y,-1,1),(z,-1,1),color='yellow',opacity=0.5)
d12new = V_z.subs(t=t2)-V_z.subs(t=t1)
d13new = V_z.subs(t=t3)-V_z.subs(t=t1)
planet = Matrix([r-V_z.subs(t=t1),d12new,d13new]).det()==0
plotplane = implicit_plot3d(planet,(x,-1,1),(y,-1,1),(z,-1,1),opacity=0.5)
show(point+P+plotplane+plotplanet1+plotplanet2+plotplanet3)
The red plane is the osculating plane for $t_1=-0.4$.
The green plane is the osculating plane for $t_2=0.1$.
The yellow plane is the osculating plane for $t_3=0.7$.
The blue plane is the plane that passes through $\mathbf{z}(-0.4)$, $\mathbf{z}(0.1)$ and $\mathbf{z}(0.7)$.
We also show the point of intersection of the osculating planes to check that it is also contained in the blue plane.
If $\mathbf{z}(t)=(at,bt^2,ct^3)$, then $\mathbf{z}'(t)=(a,2bt,3ct^2)$ and its norm is $$||\mathbf{z}'(t)||=\sqrt{a^2+4b^2t^2+9c^2t^4}$$ The length of $\mathbf{z}(t)$ between $t=t_1$ and $t=t_2$ will be $$\int_{t_1}^{t_2}\sqrt{a^2+4b^2t^2+9c^2t^4}\ \text{d}t$$ In general, it is not easy to find an elemental antiderivative. However, for some values of $a$, $b$ and $c$, we can express the radicand as a squared quantity that will simplify with the square root. In that way, we would just have to integrate a polynomial.
Looking at the form of the radicand, assume that we can write the following: $$a^2+4b^2t^2+9c^2t^4=(\delta+\varepsilon t^2)^2$$ for some $\delta$ and some $\varepsilon$, both with the same sign. Then, $$(\delta+\varepsilon t^2)^2=\delta^2+2\delta\varepsilon t^2+\varepsilon^2t^4$$ Comparing the terms with the same degree, we obtain the value of the coefficients.
From the constant term, we obtain $\delta^2=a^2$.
From the term that goes with $t^4$, we obtain $\varepsilon^2=9c^2$.
From the term that goes with $t^2$, we obtain $2\delta\varepsilon=4b^2\implies\delta\epsilon=2b^2$.
It is necessary that $\delta$ and $\varepsilon$ have the same sign so the equality of the coefficients associated to $t^2$ does not imply that a negative quantity is equal to a positive quantity (absurd). Solving for $\delta$ and $\varepsilon$ in the equalities of the coefficients of $t^0$ and $t^4$, we can choose the two positive solutions or the two negative solutions. Nevertheless, the choice does not matter in $(\delta+\varepsilon t^2)^2$, so we will keep the positive solutions. Therefore, we obtain the following final conditions:
From the constant term, we obtain $\delta=a$.
From the term that goes with $t^4$, we obtain $\varepsilon=3c$.
From the term that goes with $t^2$, we obtain $3ac=2b^2$.
Then, the basic requirement is that the triple $(a,b,c)$ satisfies $3ac=2b^2$. If this is satisfied, then, we can choose $\delta=a$ and $\varepsilon=3c$.
For example, let us take
$$a=6$$$$b=3\sqrt{2}$$$$c=2$$Clearly, $3ac=2b^2$. Then, we choose $\delta=a=6$ and $\varepsilon=3c=6$. Therefore,
$$\int_{t_1}^{t_2}\sqrt{36+72t^2+36t^4}\ \text{d}t = \int_{t_1}^{t_2}\sqrt{(6+6t^2)^2}\ \text{d}t = \int_{t_1}^{t_2}(6+6t^2)\ \text{d}t = 6\left[t+\frac{t^3}{3}\right]_{t_1}^{t_2}=6\left(t_2-t_1+\frac{t_2^3-t_1^3}{3}\right)$$In particular, the total length in the interval $[t_1=-1,t_2=1]$ would be $16$.